1. Field of the Invention
Embodiments of the present invention generally relate to image sequence encoding, and, more specifically, to determining changed image data in successive frames of an image sequence in advance of encoding the changed image data.
2. Description of the Related Art
Updates applied to a data structure such as a frame buffer containing image content may be detected using several methods. A simple yet processing intensive approach is to systematically scan the current frame in a continuous sequence, such as a ‘raster scan’ or an ‘M-Scan’, comparing each element (e.g., Red, Green, Blue (RGB) pixel value) of the current frame with the corresponding element of a previous frame during the scan. A more efficient approach involves the monitoring of software instructions tasked with such frame updates, the arguments of which may provide information on where the updates are applied. However, such an approach is generally only available on platforms with open software architectures. Yet another approach comprises monitoring change detection registers or checksum hardware associated with the memory regions. By monitoring ‘dirty bits’ or changes to checksums, it is possible to determine that memory pages associated with a frame have been overwritten. Such an approach necessitates the availability of specialized support hardware in the memory management unit (MMU) of the computer system and generally mandates support from the operating system which increases processing overheads.
Additional challenges exist in some modern computing systems that provide the ability for third party software to access managed data structures, such as frame buffers containing image content. Access to such data structures is provided without accompanying support data or other explicit means for determining the location of changed elements in the data structure when it is updated. Raster scanning of such data structures to determine changes in preparation for other image processing is particularly problematic in real time systems which are sensitive to any additional Central Processing Unit (CPU) consumption or processing delays. Virtualized systems are particularly sensitive to CPU consumption overheads as the associated CPU resources are preferably released for use by other system processes (e.g., other virtual machines).
Therefore, there is a need in the art for efficiently determining changes to data structures such as those comprising interactive images or streamed image sequences.